import java.lang.reflect.Proxy;

/**
 * Operation接口动态代理测试类
 */
public class OperationTest {
    public static void main(String[] args) {
        System.out.println("========== 实验任务2：动态代理测试 ==========\n");

        // 1.创建目标对象
        Operation realOperation = new RealOperation();

        // 2.创建调用处理器对象
        OperationProxyHandler handler = new OperationProxyHandler(realOperation);

        // 3.使用Proxy类创建动态代理实例
        Operation proxy = (Operation) Proxy.newProxyInstance(
                realOperation.getClass().getClassLoader(),
                realOperation.getClass().getInterfaces(),
                handler);

        // 4.通过代理对象调用方法，会自动触发日志记录
        System.out.println("【测试1：第一次调用】");
        proxy.doSomething();

        System.out.println("\n【测试2：第二次调用】");
        proxy.doSomething();

        System.out.println("\n【测试3：第三次调用】");
        proxy.doSomething();

        System.out.println("\n========== 测试完成 ==========");
    }
}
